From c15cad7df60be4de55233fd32a7f60a15886d226 Mon Sep 17 00:00:00 2001 From: George Dunlap Date: Fri, 25 Feb 2011 17:26:18 +0000 Subject: [PATCH] libxc: Handle failed xc_get_hvm_param in domain save The domain save code will read an HVM param, and if it's not zero, make an entry for it. However, if the hypercall fails for any reason, the data may not be written, and the value for the previous parameter may be written in the save file as the parameter that failed. Initialize the value to zero before each hypercall, so that in case of a failure, no value will be written. Signed-off-by: George Dunlap Acked-by: Ian Jackson Committed-by: Ian Jackson --- tools/libxc/xc_domain_save.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c index 22bab3c858..fa270f51f6 100644 --- a/tools/libxc/xc_domain_save.c +++ b/tools/libxc/xc_domain_save.c @@ -1597,6 +1597,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter } chunk = { 0, }; chunk.id = XC_SAVE_ID_HVM_IDENT_PT; + chunk.data = 0; xc_get_hvm_param(xch, dom, HVM_PARAM_IDENT_PT, (unsigned long *)&chunk.data); @@ -1608,6 +1609,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter } chunk.id = XC_SAVE_ID_HVM_VM86_TSS; + chunk.data = 0; xc_get_hvm_param(xch, dom, HVM_PARAM_VM86_TSS, (unsigned long *)&chunk.data); @@ -1619,6 +1621,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter } chunk.id = XC_SAVE_ID_HVM_CONSOLE_PFN; + chunk.data = 0; xc_get_hvm_param(xch, dom, HVM_PARAM_CONSOLE_PFN, (unsigned long *)&chunk.data); @@ -1630,6 +1633,7 @@ int xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iter } chunk.id = XC_SAVE_ID_HVM_ACPI_IOPORTS_LOCATION; + chunk.data = 0; xc_get_hvm_param(xch, dom, HVM_PARAM_ACPI_IOPORTS_LOCATION, (unsigned long *)&chunk.data); -- 2.30.2